package jiangzuomanage.view;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import jiangzuomanage.dao.JiangZuoDaoImpl;
import jiangzuomanage.model.JiangZuo;

/**
 * @Description 用于讲座增删改查面板
 */
public class CrudJiangZuoPanel extends JPanel implements ActionListener {
	JiangZuoDaoImpl jiangZuoDao = new JiangZuoDaoImpl();
	// 定义首页按钮、讲座列表按钮、 其他功能按钮,增加讲座、删除讲座、修改讲座、查询讲座
	private JButton addBtn, deleteBtn, updateBtn, findBtn;
	// 定义标签 底部信息标签、 讲座编号、 讲座名称、 讲座地点、 讲座价格 讲座人 日期
	private JLabel idLabel, nameLabel, placeLabel, personLabel, timeLabel;
	// 定义讲座编号、 名称、 地点、 讲座人 日期文本框
	private JTextField idJTextField, nameJTextField, placeJTextField, personJTextField, timeJTextField;
	// 定义文本对象
	private String jiangZuoIdText;
	private String jiangZuoNameText;
	private String jiangZuoPlaceText;
	private String jiangZuoPersonText;
	private String jiangZuoTimeText;

	// 构造方法
	public CrudJiangZuoPanel() {
		// 实例化增删改查按钮
		addBtn = new JButton("增加讲座");
		addBtn.addActionListener(this);// 设置讲座增加按钮监听
		addBtn.setActionCommand("addJiangZuo");
		deleteBtn = new JButton("删除讲座");
		deleteBtn.addActionListener(this);// 设置讲座删除按钮监听
		deleteBtn.setActionCommand("deleteJiangZuo");
		updateBtn = new JButton("修改讲座");
		updateBtn.addActionListener(this);// 设置讲座修改按钮监听
		updateBtn.setActionCommand("updateJiangZuo");
		findBtn = new JButton("查询讲座");
		findBtn.addActionListener(this);// 设置讲座查询按钮监听
		findBtn.setActionCommand("findJiangZuo");
		// 实例化讲座编号 名称 地点 价格标签
		idLabel = new JLabel("         讲 座 编 号");
		nameLabel = new JLabel("         讲 座 名 称");
		placeLabel = new JLabel("         讲 座 地 点");
		personLabel = new JLabel("         讲 座 人 名");
		timeLabel = new JLabel("         讲 座 日 期");
		// 实例化文本框
		idJTextField = new JTextField(12);
		nameJTextField = new JTextField(12);
		placeJTextField = new JTextField(12);
		personJTextField = new JTextField(12);
		timeJTextField = new JTextField(12);
		this.setLayout(new GridLayout(8, 2, 2, 2));
		// 给增删改查面板添加讲座编号 名称 地点 以及文本框
		this.add(idLabel);
		this.add(idJTextField);
		this.add(nameLabel);
		this.add(nameJTextField);
		this.add(placeLabel);
		this.add(placeJTextField);
		this.add(personLabel);
		this.add(personJTextField);
		this.add(timeLabel);
		this.add(timeJTextField);
		// 给增删改查面板添加讲座编号 名称 地点 按钮
		this.add(addBtn);
		this.add(deleteBtn);
		this.add(updateBtn);
		this.add(findBtn);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand().equals("addJiangZuo")) {// 添加讲座
			addJiangZuo();
		} else if (e.getActionCommand().equals("deleteJiangZuo")) {// 删除讲座
			deleteJiangZuo();
		} else if (e.getActionCommand().equals("updateJiangZuo")) {// 修改讲座
			updateJiangZuo();
		} else if (e.getActionCommand().equals("findJiangZuo")) {// 查询讲座
			findJiangZuo();
		}
	}

	/**
	 * 查询讲座
	 */
	private void findJiangZuo() {
		// 定义一个讲座对象
		JiangZuo book;
		jiangZuoIdText = idJTextField.getText().trim().toString();
		jiangZuoNameText = nameJTextField.getText().trim().toString();
		if (jiangZuoIdText.equals("")) {
			JOptionPane.showMessageDialog(this, "输入讲座编号查询");
		} else {
			boolean flag = false;// 是否查到讲座
			// 遍历集合查询书籍

			List<JiangZuo> jiangZuos = jiangZuoDao.findJiangZuo(null);
			for (int i = 0; i < jiangZuos.size(); i++) {
				if (jiangZuos.get(i).getId().equals(jiangZuoIdText)) {
					//查询数据库
					JiangZuo jiangZuo = jiangZuoDao.findById(jiangZuos.get(i));
					// 查到当前讲座了 给对应得文本框赋值
					this.nameJTextField.setText(jiangZuo.getName());
					this.personJTextField.setText(jiangZuo.getPerson());
					this.timeJTextField.setText(jiangZuo.getTime());
					this.placeJTextField.setText(jiangZuo.getPlace() + "");
					flag = true;// 查到讲座
					break;// 查到了终止查询
				}
			}
			if (!flag) {// 没有查到讲座
				JOptionPane.showMessageDialog(this, "讲座不存在");
			}
		}
	}

	/**
	 * 修改讲座
	 */
	private void updateJiangZuo() {
		jiangZuoIdText = idJTextField.getText().trim().toString();
		jiangZuoNameText = nameJTextField.getText().trim().toString();
		jiangZuoPlaceText = placeJTextField.getText().trim().toString();
		jiangZuoPersonText = personJTextField.getText().trim().toString();
		jiangZuoTimeText = timeJTextField.getText().trim().toString();
		if (jiangZuoIdText.equals("")) {
			JOptionPane.showMessageDialog(this, "讲座编号不能为空");
		} else if (jiangZuoNameText.equals("")) {
			JOptionPane.showMessageDialog(this, "讲座名称不能为空");
		} else {
			try {
				List<JiangZuo> jiangZuos = jiangZuoDao.findJiangZuo(null);
				boolean flag = false;// 修改成功标志
				for (int i = 0; i < jiangZuos.size(); i++) {
					// 要修改得讲座存不存在
					if (jiangZuos.get(i).getId().equals(jiangZuoIdText)) {
						JiangZuo jiangZuo = new JiangZuo(jiangZuoIdText, jiangZuoNameText, jiangZuoTimeText, jiangZuoPersonText,
								jiangZuoPlaceText);
						jiangZuos.remove(jiangZuos.get(i));// 刪除之前的圖書
						jiangZuos.add(jiangZuo);// 存入修改后的圖書

						//数据库更新讲座
						jiangZuoDao.updateJiangZuo(jiangZuo);
						flag = true;
						JOptionPane.showMessageDialog(this, "修改成功");
						break;
					}
				}
				if (!flag) {
					JOptionPane.showMessageDialog(this, "输入已经存在得讲座编号");
				}
			} catch (Exception e) {
				JOptionPane.showMessageDialog(this, "修改失败！填写正确得表单");
			}
		}

	}

	/**
	 * 删除讲座
	 */
	private void deleteJiangZuo() {
		jiangZuoIdText = idJTextField.getText().trim().toString();
		if (jiangZuoIdText.equals("")) {
			JOptionPane.showMessageDialog(this, "讲座编号不能为空");
		} else {
			boolean flag = false;// 删除成功标志
			List<JiangZuo> jiangZuos = jiangZuoDao.findJiangZuo(null);
			for (int i = 0; i < jiangZuos.size(); i++) {
				// 要删除得讲座存不存在
				if (jiangZuos.get(i).getId().equals(jiangZuoIdText)) {
					//删除讲座
					jiangZuoDao.deleteJiangZuo(jiangZuos.get(i));
					JOptionPane.showMessageDialog(this, "讲座删除成功");
					flag = true;
					break;
				}
			}
			if (!flag) {
				JOptionPane.showMessageDialog(this, "输入正确的讲座编号");
			}
		}

	}

	/**
	 * 增加讲座
	 */
	private void addJiangZuo() {
		jiangZuoIdText = idJTextField.getText().trim().toString();
		jiangZuoNameText = nameJTextField.getText().trim().toString();
		jiangZuoPlaceText = placeJTextField.getText().trim().toString();
		jiangZuoPersonText = personJTextField.getText().trim().toString();
		jiangZuoTimeText = timeJTextField.getText().trim().toString();
		if (jiangZuoIdText.equals("")) {
			JOptionPane.showMessageDialog(this, "讲座编号不能为空");
		} else if (jiangZuoNameText.equals("")) {
			JOptionPane.showMessageDialog(this, "讲座名称不能为空");
		} else {
			try{
				boolean flag = false;// 成功标志
				List<JiangZuo> jiangZuos = jiangZuoDao.findJiangZuo(null);
				for (int i = 0; i < jiangZuos.size(); i++) {
					if (jiangZuos.get(i).getId().equals(jiangZuoIdText)) {// 存在编号重复得讲座
						JOptionPane.showMessageDialog(this, "讲座编号重复");
						flag = true;
						break;
					}
				}
				if (!flag) {// 编号不重复
					JiangZuo jiangZuo = new JiangZuo(jiangZuoIdText, jiangZuoNameText, jiangZuoTimeText, jiangZuoPersonText,
							jiangZuoPlaceText);

					jiangZuos.add(jiangZuo);
					//加入数据库
					jiangZuoDao.addJiangZuo(jiangZuo);
					JOptionPane.showMessageDialog(this, "讲座添加成功");
				}
			}catch(Exception e){
				JOptionPane.showMessageDialog(this, "添加失败！请填写正确得表单");
			}
		}
	}

}
